import { Callout } from "nextra-theme-docs";

# プラットフォームプロキシ

GZCTFには、WebSocket-TCPの転送機能と対応するトラフィック記録機能が組み込まれており、関連する設定項目を通じて有効にすることができます。

## 設定

`appsettings.json` で `ContainerProvider` ノードを見つけて、以下のように設定します：

```json
{
  "ContainerProvider": {
    "PortMappingType": "PlatformProxy",
    "EnableTrafficCapture": false
  }
}
```

## 使用方法

プラットフォームプロキシが有効になった後、プラットフォームの `/api/proxy/{guid}` ンターフェースを使用して、TCP over WebSocketのトラフィック転送を行うことができます。

任意のこの方式をサポートするプログラムを接続することができます。また、推奨クライアント：[WebSocketReflectorX](https://github.com/XDSEC/WebSocketReflectorX)を使用してローカルポートプロキシを行い、無感覚なインタラクションを行うことができます。

## 注意事項

`Docker` をバックエンドとして単体で使用し、`PlatformProxy` ポートマッピングタイプを使用する場合、GZCTFがチャレンジのコンテナにスムーズにアクセスできるように、追加で手動でネットワークを作成する必要があります：

```bash
docker network create challenges -d bridge --subnet 192.168.133.0/24
```

設定項目 **ChallengeNetwork** を対応するネットワーク名に設定し、`compose.yml` で外部ネットワークをブリッジする必要があります。例えば：

```yaml
services:
  gzctf:
    ...
    networks:
    - default
    - challenges

networks:
  challenges:
    external: true
```
